/**
 * 
 */
package com.cuc.platform.core.componet.security.service;

import java.util.List;

import com.cuc.platform.core.componet.security.domain.SecurityRole;
import com.cuc.platform.core.service.ServiceException;

/**
 * @author peepul
 *
 * 系统角色独立访问业务接口
 */
public interface SecurityRoleService {

	/**
	 * 根据标识获取SecurityRole对象
	 * 
	 * @param id
	 * @return SecurityRole
	 */
	public SecurityRole getSecurityRole(Long id);
	
	/**
	 * 获取所有账号对象
	 * 
	 * @return SecurityRole List
	 */
	public List<SecurityRole> getAllRoles();
	
	/**
	 * 根据角色id称获取SecurityRole及关联的权限集合
	 * 
	 * @param id
	 * @return SecurityRole
	 */
	public SecurityRole getRoleWithAuths(Long id);
	
	/**
	 * 新增角色对象
	 * 
	 * @param role
	 * @throws ServiceException 
	 */
	public void insertRole(SecurityRole role) throws ServiceException;
	
	/**
	 * 更新角色对象
	 * 
	 * @param role
	 * @throws ServiceException 
	 */
	public void updateRole(SecurityRole role) throws ServiceException;
	
	/**
	 * 根据id删除role对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 * @throws ServiceException 
	 */
	public void delRole(Long id) throws ServiceException;	
	
	/**
	 * 根据权限id，查找所有的权限数据，其中角色已经和权限有关联的，角色对象id属性不为空，否则为空。
	 * 
	 * @param roleId
	 * @return List<SecurityRole>
	 */
	public List<SecurityRole> findAuthswithRoles(Long roleId);
	
	/**
	 * 保存权限与资源的关联关系。往ss_auth_resc中保存关联数据
	 * 
	 * @param map
	 */
	public void saveRoleAuthUnions(String role_id, String[] auth_ids) throws ServiceException;
}
